// createStore: 创建vuex实例对象

import { createStore, createLogger } from 'vuex'
import user from './modules/user'
import cart from './modules/cart'
import category from './modules/category'
import createPersistedstate from 'vuex-persistedstate'

export default createStore({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
    user,
    cart,
    category
  },
  plugins: [
    // 作用机制: 加入持久化缓存的模板中的数据一旦发生变化之后 就会自动往本地存
    // vuex中cart/user中的响应式数据和本地ls永远是同步(俩个方向：数据变化 vuex -> 本地  刷新 本地-> vuex)

    // 拓展：
    // 1. 默认情况下 会自动同步到localStorage
    // 2. 如果想要自定义 只需要提供一个支持 删除 添加 取值的对象即可
    // storage: {setItem(){ cookies.set() }, getItem(){ cookies.get() }, removeItem(){ cookies.remove()}}
    createPersistedstate({
      key: 'rabbit-133', // 将来vuex中的数据存入本地ls时 使用的key的名称
      paths: ['user', 'cart'] // 想把哪些模板中的响应式数据进行持久化 就把它的名字写过来
    }),
    createLogger() // 每次提交mutation函数都会在浏览器打印区域 打印出本次mutation提交的关键信息
  ]
})
